﻿using System;
using System.Collections.Generic;
using System.Text;


namespace Controleur
{

    /**
    * @author PAN
    * @date Juin 2010
    * @brief La classe ModeEcriture dérive de modeDessin et correspond au mode reconnaissance d'écriture de l'onglet Dessin
    */
    class ModeEcriture : ModeDessin
    {
        /***********************/
        /**** Attribut ****/
        /***********************/

        public vue.Form2 fenetreEcriture;

        /***********************/
        /**** Constructeurs ****/
        /***********************/

        /** 
        public ModeEcriture(System.Drawing.Color _couleur, int _epaisseur, vue.Form2 _fenetreEcriture)
         * 
         * @brief Constructeur
         * @param System.Drawing.Color _couleur : la couleur des traits par défaut
         * @param int _epaisseur : l'épaisseur des traits par défaut
         * @param vue.Form2 _fenetreEcriture : la fenêtre dans laquelle se fait la reconnaissance
         * @return void
         */
        public ModeEcriture(System.Drawing.Color _couleur, int _epaisseur, vue.Form2 _fenetreEcriture)
            : base(_couleur, _epaisseur)
        {
            fenetreEcriture = _fenetreEcriture;
        }

        /** 
          * ModeEcriture()
          * 
          * @brief Constructeur par défaut
          * @return void
          */
        public ModeEcriture(): base()
        {
        }

        /**
         * ActionZoneDessin(Microsoft.Ink.Stroke _stroke)
         * 
         * @brief écriture sur la zone de dessin
         * @param Stroke _stroke : objet contenant de nombreuses informations (analogue à ensemble de points)
         * @return void
        */
        public override void ActionZoneDessin(Microsoft.Ink.Stroke _stroke)
        {
            Microsoft.Ink.InkEdit panel = fenetreEcriture.getPanel();
            System.Drawing.Font police = fenetreEcriture.getPolice();

            Console.WriteLine("Reconnaissance de : {0} ", panel.Text);
            if (panel.Text != "") //evite d'ajouter des chaines vides
            {
                System.Drawing.Point point = _stroke.GetPoint(0); //recuperation de la position
                Modele.Position position = new Modele.Position(point.X, point.Y);
                add(new Modele.Texte(position, panel.Text,police,couleur));
                rafraichirVue();
            }
            
            
        }


    }
}
